home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / CType.C < prev    next >
C/C++ Source or Header  |  1992-04-27  |  20KB  |  379 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "CType.h"
  6.  
  7. char *hexChars= "0123456789abcdef";
  8.  
  9. struct CType _C_Type_[]= {
  10. 0,                  0,                  0,   /* -1 == EOF */
  11. _A_|_C_|_V_,        0,                  0,   /* 0x00 */
  12. _A_|_C_,            0,                  0,   /* 0x01 */
  13. _A_|_C_,            0,                  0,   /* 0x02 */
  14. _A_|_C_,            0,                  0,   /* 0x03 */
  15. _A_|_C_,            0,                  0,   /* 0x04 */
  16. _A_|_C_,            0,                  0,   /* 0x05 */
  17. _A_|_C_,            0,                  0,   /* 0x06 */
  18. _A_|_C_,            0,                  0,   /* 0x07 */
  19. _A_|_C_,            0,                  0,   /* 0x08 */
  20. _A_|_C_|_S_|_V_,    0,                  0,   /* 0x09 */
  21. _A_|_C_|_S_|_V_,    0,                  0,   /* 0x0a */
  22. _A_|_C_|_S_|_V_,    0,                  0,   /* 0x0b */
  23. _A_|_C_|_S_|_V_,    0,                  0,   /* 0x0c */
  24. _A_|_C_|_S_|_V_,    0,                  0,   /* 0x0d */
  25. _A_|_C_,            0,                  0,   /* 0x0e */
  26. _A_|_C_,            0,                  0,   /* 0x0f */
  27. _A_|_C_,            0,                  0,   /* 0x10 */
  28. _A_|_C_,            0,                  0,   /* 0x11 */
  29. _A_|_C_,            0,                  0,   /* 0x12 */
  30. _A_|_C_,            0,                  0,   /* 0x13 */
  31. _A_|_C_,            0,                  0,   /* 0x14 */
  32. _A_|_C_,            0,                  0,   /* 0x15 */
  33. _A_|_C_,            0,                  0,   /* 0x16 */
  34. _A_|_C_,            0,                  0,   /* 0x17 */
  35. _A_|_C_,            0,                  0,   /* 0x18 */
  36. _A_|_C_,            0,                  0,   /* 0x19 */
  37. _A_|_C_,            0,                  0,   /* 0x1a */
  38. _A_|_C_,            0,                  0,   /* 0x1b */
  39. _A_|_C_,            0,                  0,   /* 0x1c */
  40. _A_|_C_,            0,                  0,   /* 0x1d */
  41. _A_|_C_,            0,                  0,   /* 0x1e */
  42. _A_|_C_,            0,                  0,   /* 0x1f */
  43. _A_|_S_|_B_|_V_,    "space",            0,   /* 0x80 */
  44. _A_|_P_,            "exclam",           0,   /* 0x80 */
  45. _A_|_P_,            "quotedbl",         0,   /* 0x80 */
  46. _A_|_P_,            "numbersign",       0,   /* 0x80 */
  47. _A_|_P_,            "dollar",           0,   /* 0x80 */
  48. _A_|_P_,            "percent",          0,   /* 0x80 */
  49. _A_|_P_,            "ampersand",        0,   /* 0x80 */
  50. _A_|_P_,            "quoteright",       0,   /* 0x80 */
  51. _A_|_P_,            "parenleft",        0,   /* 0x80 */
  52. _A_|_P_,            "parenright",       0,   /* 0x80 */
  53. _A_|_P_,            "asterisk",         0,   /* 0x80 */
  54. _A_|_P_,            "plus",             0,   /* 0x80 */
  55. _A_|_P_,            "comma",            0,   /* 0x80 */
  56. _A_|_P_|_V_,         "hyphen",          0,   /* 0x80 */
  57. _A_|_P_,            "period",           0,   /* 0x80 */
  58. _A_|_P_,            "slash",            0,   /* 0x80 */
  59. _A_|_N_|_X_,        "zero",             0,   /* 0x80 */
  60. _A_|_N_|_X_,        "one",              1,   /* 0x80 */
  61. _A_|_N_|_X_,        "two",              2,   /* 0x80 */
  62. _A_|_N_|_X_,        "three",            3,   /* 0x80 */
  63. _A_|_N_|_X_,        "four",             4,   /* 0x80 */
  64. _A_|_N_|_X_,        "five",             5,   /* 0x80 */
  65. _A_|_N_|_X_,        "six",              6,   /* 0x80 */
  66. _A_|_N_|_X_,        "seven",            7,   /* 0x80 */
  67. _A_|_N_|_X_,        "eight",            8,   /* 0x80 */
  68. _A_|_N_|_X_,        "nine",             9,   /* 0x80 */
  69. _A_|_P_,            "colon",            0,   /* 0x80 */
  70. _A_|_P_,            "semicolon",        0,   /* 0x80 */
  71. _A_|_P_,            "less",             0,   /* 0x80 */
  72. _A_|_P_,            "equal",            0,   /* 0x80 */
  73. _A_|_P_,            "greater",          0,   /* 0x80 */
  74. _A_|_P_,            "question",         0,   /* 0x80 */
  75. _A_|_P_,            "at",               0,   /* 0x80 */
  76. _A_|_U_|_X_,        "A",               10,   /* 0x80 */
  77. _A_|_U_|_X_,        "B",               11,   /* 0x80 */
  78. _A_|_U_|_X_,        "C",               12,   /* 0x80 */
  79. _A_|_U_|_X_,        "D",               13,   /* 0x80 */
  80. _A_|_U_|_X_,        "E",               14,   /* 0x80 */
  81. _A_|_U_|_X_,        "F",               15,   /* 0x80 */
  82. _A_|_U_,            "G",                0,   /* 0x80 */
  83. _A_|_U_,            "H",                0,   /* 0x80 */
  84. _A_|_U_,            "I",                0,   /* 0x80 */
  85. _A_|_U_,            "J",                0,   /* 0x80 */
  86. _A_|_U_,            "K",                0,   /* 0x80 */
  87. _A_|_U_,            "L",                0,   /* 0x80 */
  88. _A_|_U_,            "M",                0,   /* 0x80 */
  89. _A_|_U_,            "N",                0,   /* 0x80 */
  90. _A_|_U_,            "O",                0,   /* 0x80 */
  91. _A_|_U_,            "P",                0,   /* 0x80 */
  92. _A_|_U_,            "Q",                0,   /* 0x80 */
  93. _A_|_U_,            "R",                0,   /* 0x80 */
  94. _A_|_U_,            "S",                0,   /* 0x80 */
  95. _A_|_U_,            "T",                0,   /* 0x80 */
  96. _A_|_U_,            "U",                0,   /* 0x80 */
  97. _A_|_U_,            "V",                0,   /* 0x80 */
  98. _A_|_U_,            "W",                0,   /* 0x80 */
  99. _A_|_U_,            "X",                0,   /* 0x80 */
  100. _A_|_U_,            "Y",                0,   /* 0x80 */
  101. _A_|_U_,            "Z",                0,   /* 0x80 */
  102. _A_|_P_,            "bracketleft",      0,   /* 0x80 */
  103. _A_|_P_,            "backslash",        0,   /* 0x80 */
  104. _A_|_P_,            "bracketright",     0,   /* 0x80 */
  105. _A_|_P_,            "asciicircum",      0,   /* 0x80 */
  106. _A_|_P_|_W_,        "underscore",       0,   /* 0x80 */
  107. _A_|_P_,            "quoteleft",        0,   /* 0x80 */
  108. _A_|_L_|_X_,        "a",               10,   /* 0x80 */
  109. _A_|_L_|_X_,        "b",               11,   /* 0x80 */
  110. _A_|_L_|_X_,        "c",               12,   /* 0x80 */
  111. _A_|_L_|_X_,        "d",               13,   /* 0x80 */
  112. _A_|_L_|_X_,        "e",               14,   /* 0x80 */
  113. _A_|_L_|_X_,        "f",               15,   /* 0x80 */
  114. _A_|_L_,            "g",                0,   /* 0x80 */
  115. _A_|_L_,            "h",                0,   /* 0x80 */
  116. _A_|_L_,            "i",                0,   /* 0x80 */
  117. _A_|_L_,            "j",                0,   /* 0x80 */
  118. _A_|_L_,            "k",                0,   /* 0x80 */
  119. _A_|_L_,            "l",                0,   /* 0x80 */
  120. _A_|_L_,            "m",                0,   /* 0x80 */
  121. _A_|_L_,            "n",                0,   /* 0x80 */
  122. _A_|_L_,            "o",                0,   /* 0x80 */
  123. _A_|_L_,            "p",                0,   /* 0x80 */
  124. _A_|_L_,            "q",                0,   /* 0x80 */
  125. _A_|_L_,            "r",                0,   /* 0x80 */
  126. _A_|_L_,            "s",                0,   /* 0x80 */
  127. _A_|_L_,            "t",                0,   /* 0x80 */
  128. _A_|_L_,            "u",                0,   /* 0x80 */
  129. _A_|_L_,            "v",                0,   /* 0x80 */
  130. _A_|_L_,            "w",                0,   /* 0x80 */
  131. _A_|_L_,            "x",                0,   /* 0x80 */
  132. _A_|_L_,            "y",                0,   /* 0x80 */
  133. _A_|_L_,            "z",                0,   /* 0x80 */
  134. _A_|_P_,            "braceleft",        0,   /* 0x80 */
  135. _A_|_P_,            "bar",              0,   /* 0x80 */
  136. _A_|_P_,            "braceright",       0,   /* 0x80 */
  137. _A_|_P_,            "asciitilde",       0,   /* 0x80 */
  138. _A_|_C_,            0,                  0,   /* 0x80 */
  139. _U_,                "Adieresis",        0,   /* 0x80 */
  140. _U_,                "Aring",            0,   /* 0x81 */
  141. _U_,                "Ccedilla",         0,   /* 0x82 */
  142. _U_,                "Eacute",           0,   /* 0x83 */
  143. _U_,                "Ntilde",           0,   /* 0x84 */
  144. _U_,                "Odieresis",        0,   /* 0x85 */
  145. _U_,                "Udieresis",        0,   /* 0x86 */
  146. _L_,                "aacute",           0,   /* 0x87 */
  147. _L_,                "agrave",           0,   /* 0x88 */
  148. _L_,                "acircumflex",      0,   /* 0x89 */  
  149. _L_,                "adieresis",        0,   /* 0x8a */
  150. _L_,                "atilde",           0,   /* 0x8b */
  151. _L_,                "aring",            0,   /* 0x8c */
  152. _L_,                "ccedilla",         0,   /* 0x8d */
  153. _L_,                "eacute",           0,   /* 0x8e */
  154. _L_,                "egrave",           0,   /* 0x8f */
  155. _L_,                "ecircumflex",      0,   /* 0x90 */
  156. _L_,                "edieresis",        0,   /* 0x91 */
  157. _L_,                "iacute",           0,   /* 0x92 */
  158. _L_,                "igrave",           0,   /* 0x93 */
  159. _L_,                "icircumflex",      0,   /* 0x94 */
  160. _L_,                "idieresis",        0,   /* 0x95 */
  161. _L_,                "ntilde",           0,   /* 0x96 */
  162. _L_,                "oacute",           0,   /* 0x97 */
  163. _L_,                "ograve",           0,   /* 0x98 */
  164. _L_,                "ocircumflex",      0,   /* 0x99 */
  165. _L_,                "odieresis",        0,   /* 0x9a */
  166. _L_,                "otilde",           0,   /* 0x9b */
  167. _L_,                "uacute",           0,   /* 0x9c */
  168. _L_,                "ugrave",           0,   /* 0x9d */
  169. _L_,                "ucircumflex",      0,   /* 0x9e */
  170. _L_,                "udieresis",        0,   /* 0x9f */
  171. _P_,                "dagger",           0,   /* 0xa0 */
  172. 0,                  0,                  0,   /* 0xa1 */
  173. _P_,                "cent",             0,   /* 0xa2 */
  174. _P_,                "sterling",         0,   /* 0xa3 */
  175. _P_,                "section",          0,   /* 0xa4 */
  176. _P_,                "bullet",           0,   /* 0xa5 */
  177. _P_,                "paragraph",        0,   /* 0xa6 */
  178. _L_,                "germandbls",       0,   /* 0xa7 */
  179. _P_,                "register",         0,   /* 0xa8 */
  180. _P_,                "copyright",        0,   /* 0xa9 */
  181. _P_,                "trademark",        0,   /* 0xaa */
  182. _P_,                "acute",            0,   /* 0xab */
  183. _P_,                "dieresis",         0,   /* 0xac */
  184. 0,                  0,                  0,   /* 0xad */
  185. _U_,                "AE",               0,   /* 0xae */
  186. _U_,                "Oslash",           0,   /* 0xaf */
  187. 0,                  0,                  0,   /* 0xb0 */
  188. 0,                  0,                  0,   /* 0xb1 */
  189. 0,                  0,                  0,   /* 0xb2 */
  190. 0,                  0,                  0,   /* 0xb3 */
  191. _P_,                "yen",              0,   /* 0xb4 */
  192. 0,                  0,                  0,   /* 0xb5 */
  193. 0,                  0,                  0,   /* 0xb6 */
  194. 0,                  0,                  0,   /* 0xb7 */
  195. 0,                  0,                  0,   /* 0xb8 */
  196. 0,                  0,                  0,   /* 0xb9 */
  197. 0,                  0,                  0,   /* 0xba */
  198. _P_,                "ordfeminine",      0,   /* 0xbb */
  199. _P_,                "ordmasculine",     0,   /* 0xbc */
  200. 0,                  0,                  0,   /* 0xbd */
  201. _L_,                "ae",               0,   /* 0xbe */
  202. 0,                  0,                  0,   /* 0xbf */
  203. _P_,                "questiondown",     0,   /* 0xc0 */
  204. _P_,                "exclamdown",       0,   /* 0xc1 */
  205. _P_,                "logicalnot",       0,   /* 0xc2 */
  206. 0,                  0,                  0,   /* 0xc3 */
  207. _P_,                "florin",           0,   /* 0xc4 */
  208. 0,                  0,                  0,   /* 0xc5 */
  209. 0,                  0,                  0,   /* 0xc6 */
  210. _P_,                "guillemotleft",    0,   /* 0xc7 */
  211. _P_,                "guillemotright",   0,   /* 0xc8 */
  212. _P_,                "ellipsis",         0,   /* 0xc9 */
  213. _L_,                "space",            0,   /* 0xca */
  214. _U_,                "Aacute",           0,   /* 0xcb */
  215. _U_,                "Atilde",           0,   /* 0xcc */
  216. _U_,                "Otilde",           0,   /* 0xcd */
  217. _U_,                "OE",               0,   /* 0xce */
  218. _L_,                "oe",               0,   /* 0xcf */
  219. _P_,                "endash",           0,   /* 0xd0 */
  220. _P_,                "emdash",           0,   /* 0xd1 */
  221. _P_,                "quotedblleft",     0,   /* 0xd2 */
  222. _P_,                "quotedblright",    0,   /* 0xd3 */
  223. _P_,                "quoteleft",        0,   /* 0xd4 */
  224. _P_,                "quoteright",       0,   /* 0xd5 */
  225. 0,                  0,                  0,   /* 0xd6 */
  226. 0,                  0,                  0,   /* 0xd7 */
  227. _L_,                "ydieresis",        0,   /* 0xd8 */
  228. _U_,                "Ydieresis",        0,   /* 0xd9 */
  229. _P_,                "fraction",         0,   /* 0xda */
  230. _P_,                "currency",         0,   /* 0xdb */
  231. _P_,                "guilsinglleft",    0,   /* 0xdc */
  232. _P_,                "guilsinglright",   0,   /* 0xdd */
  233. _L_,                "fi",               0,   /* 0xde */
  234. _L_,                "fl",               0,   /* 0xdf */
  235. _P_,                "daggerdbl",        0,   /* 0xe0 */
  236. _P_,                "periodcentered",   0,   /* 0xe1 */
  237. _P_,                "quotesinglbase",   0,   /* 0xe2 */
  238. _P_,                "quotedblbase",     0,   /* 0xe3 */
  239. _P_,                "perthousand",      0,   /* 0xe4 */
  240. _U_,                "Acircumflex",      0,   /* 0xe5 */
  241. _U_,                "Ecircumflex",      0,   /* 0xe6 */
  242. _U_,                "Agrave",           0,   /* 0xe7 */
  243. _U_,                "Edieresis",        0,   /* 0xe8 */
  244. _U_,                "Egrave",           0,   /* 0xe9 */
  245. _U_,                "Iacute",           0,   /* 0xea */
  246. _U_,                "Icircumflex",      0,   /* 0xeb */
  247. _U_,                "Idieresis",        0,   /* 0xec */
  248. _U_,                "Igrave",           0,   /* 0xed */
  249. _U_,                "Oacute",           0,   /* 0xee */
  250. _U_,                "Ocircumflex",      0,   /* 0xef */
  251. 0,                  0,                  0,   /* 0xf0 */
  252. _U_,                "Ograve",           0,   /* 0xf1 */
  253. _U_,                "Uacute",           0,   /* 0xf2 */
  254. _U_,                "Ucircumflex",      0,   /* 0xf3 */
  255. _U_,                "Ugrave",           0,   /* 0xf4 */
  256. _L_,                "dotlessi",         0,   /* 0xf5 */
  257. _P_,                "circumflex",       0,   /* 0xf6 */
  258. _P_,                "tilde",            0,   /* 0xf7 */
  259. _P_,                "macron",           0,   /* 0xf8 */
  260. _P_,                "breve",            0,   /* 0xf9 */
  261. _P_,                "dotaccent",        0,   /* 0xfa */
  262. _P_,                "ring",             0,   /* 0xfb */
  263. _P_,                "cedilla",          0,   /* 0xfc */
  264. _P_,                "hungarumlaut",     0,   /* 0xfd */
  265. _P_,                "ogonek",           0,   /* 0xfe */
  266. _P_,                "caron",            0,   /* 0xff */
  267. 0,                  0
  268. };
  269.  
  270. unsigned char upcase[]= { 
  271.  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  272.  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  273.  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  274.  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  275.  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  276.  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  277.  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  278.  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  279.  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  280.  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  281.  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  282.  0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
  283.  0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  284.  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  285.  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  286.  0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
  287.  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xcb,
  288.  0xe7, 0xe5, 0x80, 0xcc, 0x81, 0x82, 0x83, 0xe9,
  289.  0xe6, 0xe8, 0xea, 0xed, 0xeb, 0xec, 0x84, 0xee,
  290.  0xf1, 0xf3, 0x85, 0xcd, 0xf2, 0xf4, 0xf3, 0x86,
  291.  0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
  292.  0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  293.  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  294.  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xae, 0xbf,
  295.  0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
  296.  0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xce,
  297.  0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  298.  0xd9, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
  299.  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
  300.  0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
  301.  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
  302.  0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
  303. };
  304.  
  305. /*
  306. unsigned char lowercasemap[]= { 
  307. };
  308. */
  309.  
  310. unsigned char identitymap[]= { 
  311.     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  312.     0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  313.     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  314.     0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  315.     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  316.     0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  317.     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  318.     0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  319.     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  320.     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  321.     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  322.     0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
  323.     0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
  324.     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
  325.     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
  326.     0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
  327.     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
  328.     0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
  329.     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
  330.     0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
  331.     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
  332.     0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  333.     0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  334.     0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
  335.     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
  336.     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
  337.     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  338.     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
  339.     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
  340.     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
  341.     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
  342.     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
  343. };
  344.  
  345. unsigned char sortmap[]= {
  346.     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  347.     0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  348.     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
  349.     0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  350.     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
  351.     0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  352.     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
  353.     0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
  354.     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  355.     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  356.     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  357.     0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
  358.     0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
  359.     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  360.     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
  361.     0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
  362.     0x41, 0x41, 0x43, 0x45, 0x84, 0x85, 0x86, 0x41,
  363.     0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x45, 0x45,
  364.     0x45, 0x45, 0x49, 0x49, 0x49, 0x49, 0x4e, 0x4f,
  365.     0x4f, 0x4f, 0x4f, 0x4f, 0x55, 0x55, 0x55, 0x55,
  366.     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x53,
  367.     0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  368.     0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
  369.     0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xae, 0xbf,
  370.     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
  371.     0xc8, 0xc9, 0x20, 0x41, 0x41, 0x4f, 0xae, 0xae,
  372.     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
  373.     0x59, 0x59, 0xda, 0xdb, 0xdc, 0xdd, 0x46, 0x46,
  374.     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x41, 0x45, 0x41,
  375.     0x45, 0x45, 0x49, 0x49, 0x49, 0x49, 0x4f, 0x4f,
  376.     0xf0, 0x4f, 0x55, 0x55, 0x55, 0x49, 0xf6, 0xf7,
  377.     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
  378. };
  379.